#include <iostream>
#include <future>
#include <thread>

int main(int argc, char *argv[])
{
    //std::async 是一个模板函数，接收一个回调（回调函数或可调用对象）作为参数，并异步执行。
    std::future<int> rst= std::async(std::launch::async, []()
    {
        std::this_thread::sleep_for(std::chrono::seconds(1));
        return 5;
    });
    // 代码会在此处阻塞，直到 future<int> 对象中的数据就绪
    int ret = rst.get();
    printf("std::launch::async:%d\n", ret);

    for (size_t i = 0; i < 10; i++)
    {
        new std::thread([i]()
        {
            for (int j = 0; j < 100000; j++)
            {
                printf("Thread:%d,%d\n", i, j);
                std::this_thread::sleep_for(std::chrono::seconds(1));
            }
        });
    }

    getchar();
    return 0;
}
